package com.wy.tingshu.servlet.user;

import com.wy.tingshu.service.UserService;
import com.wy.tingshu.view_object.UserVO;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 该类
 * 1.是个servlet(servlet对象：动态资源（负责处理HTTP输入、输出）)
 * 2.属于用户管理的内容部分
 * 3.工作是Register
 * 4.Do:接受form表单的操作
 **/
@WebServlet("/studio/user/register.do")
public class RegisterDoServlet extends HttpServlet {
    //表过程对象一般都是单例处理，直接定义到属性上可以减少对象的创建，相对来说性能好一点
    private final UserService userService=new UserService();
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.读取用户名+密码
        req.setCharacterEncoding("utf-8");
        String username=req.getParameter("username");
        String password = req.getParameter("password");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/plain");
        PrintWriter writer= resp.getWriter();
        if(username==null||password==null||username==""||password==""){
            writer.println("用户名密码不能为空，请重新注册");
            return;
        }
       //2.完成注册操作（密码加密+insert表，比较麻烦，所以放到service中处理）
        //由于这个用户对象要放到session中，属于表现/公开的对象，所以使用view_object（也是由data_object转过去的）
//        UserService userService=new UserService();//理论上userService只需要一份即可，是个单例，可以定义到外部
        UserVO userVO=userService.register(username,password);//调用userService下的注册方法

        //3.注册之后直接进行登录（将用户对象放入session中）
        HttpSession session=req.getSession();
        session.setAttribute("currentUser",userVO);//key-value

        //4.重定向到创作中心的首页
        resp.sendRedirect("/studio/");
    }
}
